﻿using System;
using System.Collections.Generic;
using Scommesse.Model;
using Scommesse.Filters;
using Scommesse.View.Admin;

namespace Scommesse.Presenters.Admin
{
    public class RisultatoPresenter : IRisultatoPresenter
    {
        private readonly RisultatoDialog _risultatoDialog;
        private readonly Palinsesto _palinsesto;

        public RisultatoPresenter(RisultatoDialog dialog)
        {
            _risultatoDialog = dialog;
            _risultatoDialog.AddListener(this);
            _palinsesto = Palinsesto.GetPalinsesto();
            _risultatoDialog.ShowDialog();
        }

        public void Load_View()
        {
            List<IEvento> eventi = FiltroPalinsesto.GetAllEventiByState(_palinsesto.GetAllEventi(), StatoEvento.InCorso);
            if (eventi != null)
                foreach (IEvento ev in eventi)
                   _risultatoDialog.AddEvento = ev.CompetitoreA + " - " + ev.CompetitoreB + " " +
                                          String.Format("{0:dd/MM/yyyy HH:mm}", ev.DataOra) + " [" + ev.Id + "]";
        }

        public void ConfermaAggiungiRisultato()
        {
            int punteggioA = -1;
            int punteggioB = -1;
            String evento = String.Empty;

            try
            {
                punteggioA = _risultatoDialog.PunteggioA;
            }
            catch
            {
                if (punteggioA < 0)
                    _risultatoDialog.PunteggioAError = "Inserisci il punteggio del competitore A";
            }
            try
            {
                punteggioB = _risultatoDialog.PunteggioB;
            }
            catch
            {
                if (punteggioB < 0)
                    _risultatoDialog.PunteggioBError = "Inserisci il punteggio del competitore B";
            }
            try
            {
                evento = _risultatoDialog.NomeEvento;
            }
            catch
            {
                if (String.IsNullOrEmpty(evento))
                    _risultatoDialog.EventoError = "Selezionare un evento";
            }

            if (punteggioA >= 0 && punteggioB >= 0 && !String.IsNullOrEmpty(evento))
            {
                // var campiEv = ev.Split(' ');
                string id = evento.Split('[')[1].Split(']')[0];

                Palinsesto.GetPalinsesto().GetEventoById(new Guid(id)).SetPunteggi(punteggioA, punteggioB);

                _risultatoDialog.Close();
            }
        }

    }
}
